#ifndef __APP_SERIAL_H__
#define __APP_SERIAL_H__

#include <termios.h>
#include "app_device.h"

typedef enum{
    BR_9600   = B9600,
    BR_115200 = B115200
}BaudRate;

typedef enum{
    StopBits_1 = 0,
    StopBits_2 = CSTOPB
}StopBits;

typedef enum{
    Parity_None = 0,
    Parity_Odd  = PARENB | PARODD,
    Parity_Even = PARENB
}Parity;

typedef enum{
    NoBlock = 0,
    Block   = 1
}is_Block;

/**
 * @brief 初始化串口
 * @param dev 设备结构体指针
 */
int App_Serial_Init(Device_t *dev);

/**
 * @brief 设置串口波特率
 * @param dev 设备结构体指针
 * @param br 波特率
 */
int App_Serial_SetBaudRate(Device_t *dev, BaudRate br);

/**
 * @brief 设置串口奇偶校验
 * @param dev 设备结构体指针
 * @param parity 校验方式
 */
int App_Serial_SetParity(Device_t *dev, Parity parity);

/**
 * @brief 设置串口停止位
 * @param dev 设备结构体指针
 * @param sb 停止位
 */
int App_Serial_SetStopBits(Device_t *dev, StopBits sb);

/**
 * @brief 设置串口阻塞方式
 * @param dev 设备结构体指针
 * @param is_block 是否阻塞
 */
int App_Serial_SetBlock(Device_t *dev, is_Block block);

/**
 * @brief 设置串口为原始模式
 * @param dev 设备结构体指针
 */
int App_Serial_SetRaw(Device_t *dev);

#endif
